public class Float_detail {
    //浮点数类型细节
    public static void main(String[] args){
        //java的浮点型常量（具体值）默认为double型，声明flaot型常量，须后加'f'或'F'
       // float num1=1.1;//不对，double8个字节，不能赛进4个字节的float
        float num1=1.1f;
        double num2=1.1f;  //4字节防入8字节没问题

        //十进制数形式：如：5.12    512.0f    .512  （必须有小数点）
        double num3=.123;  //等价于 .123
        System.out.println(num3);

        //科学计数法形式:如：5.12e2=5.12*10的二次方  5.12e-2=5.12/10的二次方
        System.out.println(5.12e2); //512.0
        System.out.println(5.12e-2); //0.0512

        //通常情况下使用double，因为它比float更加精准
        double num4 = 2.1234567851; //结果2.1234567851
        float num5 =  2.1234567851f;//结果2.1234567
        System.out.println(num4);
        System.out.println(num5);

        //浮点数使用陷阱：2.7和8.1/3  比较
        //请看vcr(计算机以精度的形式保存计算)
        double num6 =2.7;
        double num7 =8.1/3;
        System.out.println(num6);      //结果2.7
        System.out.println(num7);      //结果2.69999999999997
        //得到一个重要使用点：当我们对运算结果是小数的进行相等怕判断时，要小心
        //if(num6==num7){
        //  System.out.println("相等");
        //}
        //应该是以两个数的差值的绝对值，在某一个精度范围类判断
        //正确写法
        if(Math.abs(num6-num7)<0.00001){
            System.out.println("相等");
        }
    }
}
